package com.shm.duXiaoMan;

import java.util.Scanner;

/**
 * 涂色
 * 时间限制： 3000MS
 * 内存限制： 589824KB
 * 题目描述：
 * 小A正在学画画，现在，线稿已经画好了，只剩下涂色部分了。但是小A发现，他的颜料不够了。每一块颜料能涂一个色块，每一个色块的颜色是事先决定好了的。 由于颜料不够，小A只能尽其所能来涂色。如果一个色块没有了颜料，就不能涂色。现在，给你画中需要的色块颜色，和小A现在手上有的颜料，请你计算小A能涂多少个色块。
 *
 *
 *
 * 输入描述
 * 输入包含两个字符串，都仅包含大写字母，每一种字母代表一种颜色。 第一个字符串S代表小A手上的颜料，第二个字符串T代表画需要的颜料。
 *
 * 1≤|S|,|T|≤1000
 *
 * 输出描述
 * 输出包含一个数，即最多能涂多少个色块。
 *
 *
 * 样例输入
 * AAB
 * ABC
 * 样例输出
 * 2
 *
 * 提示
 * 小A拥有两个A颜料，一个B颜料，用了一个A颜料一个B颜料，总共涂了两个色块。
 */
public class Main1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str1 = sc.nextLine();
        String str2 = sc.nextLine();
        boolean[] visited = new boolean[str1.length()];
        int count = 0;
//        count = getCount(str1, str2, count, visited);
        count = getCount(str1, str2, count);
        System.out.println(count);
    }

    public static int getCount(String str1,String str2,int count,boolean[] visited){
        for (int i = 0; i < str2.length(); i++) {
            for (int j = 0; j < str1.length(); j++) {
                if (str1.charAt(j)==str2.charAt(i)&&!visited[j]){
                    count++;
                    visited[j] = true;
                    break;
                }
            }
        }
        return count;
    }

    public static int getCount(String str1,String str2,int count){
        int[] a = new int[26];
        int[] b = new int[26];
        for (int i = 0; i < str1.length(); i++) {
            a[str1.charAt(i)-'A'] +=1;
        }
        for (int i = 0; i < str2.length(); i++) {
            b[str2.charAt(i)-'A'] +=1;
        }

        for (int i = 0; i < 26; i++) {
//            if (a[i]<b[i]){
//                count+=a[i];
//            }else {
//                count+=b[i];
//            }
            count += Math.min(a[i], b[i]);
        }
        return count;
    }
}
